import request from "@/utils/request";

const BASE_URL = "/store";

class StoreAPI {
  /**
   * 获取商家列表
   *
   * @param queryParams 查询参数
   * @returns 商家表格数据
   */
  static getList(queryParams?: StoreQuery) {
    return request<any, StoreVO[]>({
      url: `${BASE_URL}/list`,
      method: "get",
      params: queryParams,
    });
  }
  /**
   * 获取商家列表
   *
   * @param queryParams 查询参数
   * @returns 商家表格数据
   */
  static getDetail(id: string) {
    return request<any, StoreVO>({
      url: `${BASE_URL}/get`,
      method: "get",
      params: { id },
    });
  }

  /**
   * 文件上传
   * @param data 上传文件
   * @returns 上传完成之后的数据
   */
  static uploadFile(data: FormData) {
    return request<any, UploadFileVO>({
      url: `${BASE_URL}/upload`,
      method: "post",
      data: data,
      headers: {
        "Content-Type": "multipart/form-data",
      },
    });
  }

  /**
   * 获取商家分类列表
   *
   * @param queryParams 查询参数（可选）
   * @returns 商家分类树形表格数据
   */
  static getCategoryList(queryParams?: StoreCategoryQuery) {
    return request<any, StoreCategoryVO[]>({
      url: `${BASE_URL}/category/list`,
      method: "get",
      params: queryParams,
    });
  }

  /** 获取商家分类下拉列表 */
  static getCategoryOptions() {
    return request<any, StoreCategoryVO[]>({
      url: `${BASE_URL}/category/getList`,
      method: "get",
    });
  }

  /**
   * 获取商家分类表单数据
   *
   * @param id 商家分类ID
   * @returns 商家分类表单数据
   */
  static getFormData(id: number) {
    return request<any, StoreCategoryForm>({
      url: `${BASE_URL}/category/${id}/form`,
      method: "get",
    });
  }

  /**
   * 新增商家
   *
   * @param data 商家表单数据
   * @returns 请求结果
   */
  static add(data: StoreVO) {
    return request({
      url: `${BASE_URL}/add`,
      method: "post",
      data: data,
    });
  }

  /**
   * 修改商家
   *
   * @param id 商家ID
   * @param data 商家表单数据
   * @returns 请求结果
   */
  static update(id: number, data: StoreVO) {
    return request({
      url: `${BASE_URL}/update`,
      method: "post",
      data: { id, ...data },
    });
  }
  /**
   * 新增商家分类
   *
   * @param data 商家分类表单数据
   * @returns 请求结果
   */
  static addCategory(data: StoreCategoryForm) {
    return request({
      url: `${BASE_URL}/category/add`,
      method: "post",
      data: data,
    });
  }

  /**
   * 修改商家分类
   *
   * @param id 商家分类ID
   * @param data 商家分类表单数据
   * @returns 请求结果
   */
  static updateCategory(id: number, data: StoreCategoryForm) {
    return request({
      url: `${BASE_URL}/category/update`,
      method: "post",
      data: { id, ...data },
    });
  }

  /**
   * 删除商家分类
   *
   * @param id 商家分类ID，多个以英文逗号(,)分隔
   * @returns 请求结果
   */
  static deleteCategory(id: string) {
    return request({
      url: `${BASE_URL}/category/delete`,
      method: "get",
      params: {
        id,
      },
    });
  }
}

export default StoreAPI;

export interface UploadFileVO {
  //
  id?: number;
  //文件名称
  fileName?: string;
  //上传文件路径
  filePath?: string;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}

export interface StoreQuery extends PageQuery {
  /** 创建时间 */
  createdAt?: string;
  /** 状态 */
  status?: number;
}

/** 商家分类查询参数 */
export interface StoreCategoryQuery extends PageQuery {
  //商家分类ID
  id?: number;
  //分类名称
  name?: string;
  //商家数量
  storeCount?: number;
  //排序
  displayOrder?: number;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}

export interface StoreVO {
  //
  id?: number;
  //类型：1线下商户，2线上商户
  type?: number;
  //编号
  storeCode?: string;
  //所属服务商id
  agentId?: number | string;
  //商家分类id
  cid?: number | string;
  //商户名称
  name?: string;
  //商户简称
  shortName?: string;
  //审核状态:0-待审核,1-审核通过,2-审核驳回
  reviewStatus?: number;
  //商户logo
  logo?: string;
  //省份id
  provinceId?: number | string;
  //市id
  cityId?: number | string;
  //区id
  districtId?: number | string;
  //街道id
  streetId?: number | string;
  //详细地址
  address?: string;
  //纬度
  lat?: number;
  //经度
  lon?: number;
  //商户电话
  tel?: string;
  //营业开始时间
  startHour?: string;
  //营业结束时间
  endHour?: string;
  //营业执照编号
  licenseNumber?: string;
  //资质照片
  qualifyPics?: string;
  //联系人姓名
  managerName?: string;
  //联系人电话
  managerTel?: string;
  //联系人身份证号
  idNumber?: string;
  //联系人身份证国徽面照片
  idFrontPic?: string;
  //联系人身份证个人面照片
  idBackPic?: string;
  //创建人id
  createdUserId?: number;
  //审核驳回原因
  rejectReason?: string;
  //关联抖音商户 0否，1是
  dyStatus?: number;
  //关联第三方商户 0否，1是
  openapiStatus?: number;
  //开启聚合支付商户 0否，1是
  paymentStatus?: number;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
  //公司名称
  companyName?: string;
  //营业执照图片
  licensePicture?: string;
  //门头照
  shopFrontPicture?: string;
  //商标注册证
  tradeMarkLicense?: string;
}

/** 商家分类 */
export interface StoreCategoryVO {
  //商家分类ID
  id?: number;
  //分类名称
  name?: string;
  //商家数量
  storeCount?: number;
  //排序
  displayOrder?: number;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}

/** 商家分类表单类型 */
export interface StoreCategoryForm {
  /** 商家分类ID(新增不填) */
  id?: number;
  //分类名称
  name?: string;
  //商家数量
  storeCount?: number;
  //排序
  displayOrder?: number | string;
  //创建时间
  createdAt?: string;
  //更新时间
  updatedAt?: string;
}
